const API = require('../../utils/api')
const pathUrl = require('../../utils/common')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    tournaments: [],
    loading: false,
    showVideoModal: false, // 控制视频播放弹出框显示
    currentVideo: null, // 当前要播放的视频信息
    page: 1, // 当前页码
    hasMore: true, // 是否有更多数据
    searchKey: '', // 搜索关键词
    currentCategory: '全部', // 当前选中的分类
    categories: [
      { id: '全部', name: '全部' },
      { id: '大满贯', name: '大满贯' },
      { id: 'ATP巡回赛', name: 'ATP巡回赛' },
      { id: 'WTA巡回赛', name: 'WTA巡回赛' },
      { id: '挑战赛', name: '挑战赛' },
      { id: '卫星赛', name: '卫星赛' },
      { id: '硬地赛', name: '硬地赛' },
      { id: '红土赛', name: '红土赛' },
      { id: '草地赛', name: '草地赛' },
      { id: '室内赛', name: '室内赛' }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.fetchTournamentVideos();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 获取网球赛事学习视频列表
   */
  async fetchTournamentVideos(reset = true) {
    // 如果当前正在加载中，避免重复加载
    if (this.data.loading) return
    
    if (reset) {
      this.setData({ page: 1, hasMore: true })
    }
    
    if (!this.data.hasMore && !reset) return
    
    this.setData({ loading: true })
    
    try {
      const res = await API.tournamentList({
        name: this.data.searchKey, // 搜索字段是name
        category: this.data.currentCategory === '全部' ? '' : this.data.currentCategory, // 分类字段是category
        pageNum: this.data.page,
        pageSize: 10
      })
      
      // 处理图片和视频URL
      res.records.forEach(item => {
        item.picUrl = pathUrl+item.picUrl
        item.videoUrl = pathUrl+item.videoUrl
      })
      
      console.log(res)
      
      // 更新数据，判断是否还有更多数据
      this.setData({
        tournaments: reset ? res.records : [...this.data.tournaments, ...res.records],
        hasMore: res.records && res.records.length >= 10,
        loading: false
      })
    } catch (error) {
      console.error('加载赛事视频失败:', error)
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })
      this.setData({ loading: false })
    }
  },

  /**
   * 点击视频项，显示弹出框播放视频
   */
  showVideoModal(e) {
    const item = e.currentTarget.dataset.item;
    wx.navigateTo({
      url: `/pages/video-player/video-player?url=${item.videoUrl}`
    })
  },

  /**
   * 处理搜索输入
   */
  onSearch(e) {
    this.setData({ searchKey: e.detail.value })
    this.fetchTournamentVideos()
  },

  /**
   * 切换分类
   */
  switchCategory(e) {
    const category = e.currentTarget.dataset.category
    this.setData({ currentCategory: category })
    this.fetchTournamentVideos()
  },

  /**
   * 关闭视频播放弹出框
   */
  closeVideoModal() {
    // 暂停视频播放
    const videoContext = wx.createVideoContext('modalVideo');
    videoContext.pause();
    
    this.setData({
      showVideoModal: false,
      currentVideo: null
    });
  },

  /**
   * 阻止事件冒泡
   */
  stopPropagation() {
    // 阻止事件冒泡，防止点击弹出框内容时关闭弹出框
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.fetchTournamentVideos();
    wx.stopPullDownRefresh();
  },

  /**
   * 加载更多数据
   */
  loadMore() {
    if (!this.data.loading && this.data.hasMore) {
      this.setData({ page: this.data.page + 1 })
      this.fetchTournamentVideos(false)
    }
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.loadMore()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '网球赛事学习视频',
      path: '/pages/tournament/tournament'
    };
  }
})